home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / thinkref / archive / THINKPascalUH2.1.sea / THINKPas Univ Hdr 2.1 / Interfaces / Speech.p < prev    next >
Text File  |  1995-09-12  |  11KB  |  365 lines

  1. { Converted with MPW2TPas Tuesday, September 12, 1995 10:30:02 PM }
  2. {
  3.      File:        Speech.p
  4.  
  5.      Contains:    Speech Interfaces.
  6.  
  7.      Version:    Technology:    System 7.5
  8.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  9.  
  10.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  14.                  stack.  Include the file and version information (from above)
  15.                  in the problem description and send to:
  16.                      Internet:    apple.bugs@applelink.apple.com
  17.                      AppleLink:    APPLE.BUGS
  18.  
  19. }
  20.  
  21.  UNIT Speech;
  22.  INTERFACE
  23.  
  24.  
  25. {$IFC UNDEFINED __SPEECH__}
  26. {$SETC __SPEECH__ := 1}
  27.  
  28.   USES
  29.    ConditionalMacros, Types, Memory, Files;
  30.  
  31. { $PUSH}
  32. { $ALIGN MAC68K}
  33. { $LibExport+}
  34.  
  35. CONST
  36.     kTextToSpeechSynthType        = 'ttsc';
  37.     kTextToSpeechVoiceType        = 'ttvd';
  38.     kTextToSpeechVoiceFileType    = 'ttvf';
  39.     kTextToSpeechVoiceBundleType = 'ttvb';
  40.  
  41.     kNoEndingProsody            = 1;
  42.     kNoSpeechInterrupt            = 2;
  43.     kPreflightThenPause            = 4;
  44.  
  45.     kImmediate                    = 0;
  46.     kEndOfWord                    = 1;
  47.     kEndOfSentence                = 2;
  48.  
  49. {------------------------------------------}
  50. { GetSpeechInfo & SetSpeechInfo selectors    }
  51. {------------------------------------------}
  52.     soStatus                    = 'stat';
  53.     soErrors                    = 'erro';
  54.     soInputMode                    = 'inpt';
  55.     soCharacterMode                = 'char';
  56.     soNumberMode                = 'nmbr';
  57.     soRate                        = 'rate';
  58.     soPitchBase                    = 'pbas';
  59.     soPitchMod                    = 'pmod';
  60.     soVolume                    = 'volm';
  61.     soSynthType                    = 'vers';
  62.     soRecentSync                = 'sync';
  63.     soPhonemeSymbols            = 'phsy';
  64.     soCurrentVoice                = 'cvox';
  65.     soCommandDelimiter            = 'dlim';
  66.     soReset                        = 'rset';
  67.     soCurrentA5                    = 'myA5';
  68.     soRefCon                    = 'refc';
  69.     soTextDoneCallBack            = 'tdcb';
  70.     soSpeechDoneCallBack        = 'sdcb';
  71.     soSyncCallBack                = 'sycb';
  72.     soErrorCallBack                = 'ercb';
  73.     soPhonemeCallBack            = 'phcb';
  74.     soWordCallBack                = 'wdcb';
  75.     soSynthExtension            = 'xtnd';
  76.     soSoundOutput                = 'sndo';
  77.  
  78. {------------------------------------------}
  79. { Speaking Mode Constants                     }
  80. {------------------------------------------}
  81.     modeText                    = 'TEXT';                        { input mode constants                     }
  82.     modePhonemes                = 'PHON';
  83.     modeNormal                    = 'NORM';                        { character mode and number mode constants }
  84.     modeLiteral                    = 'LTRL';
  85.  
  86.     soVoiceDescription            = 'info';
  87.     soVoiceFile                    = 'fref';
  88.  
  89.  
  90. TYPE
  91.     SpeechChannelRecord = RECORD
  92.         data:                    ARRAY [0..0] OF LONGINT;
  93.     END;
  94.  
  95.     SpeechChannel = ^SpeechChannelRecord;
  96.  
  97.     VoiceSpec = RECORD
  98.         creator:                OSType;
  99.         id:                        OSType;
  100.     END;
  101.  
  102.  
  103. CONST
  104.     kNeuter                        = 0;
  105.     kMale                        = 1;
  106.     kFemale                        = 2;
  107.  
  108.  
  109. TYPE
  110.     VoiceDescription = RECORD
  111.         length:                    LONGINT;
  112.         voice:                    VoiceSpec;
  113.         version:                LONGINT;
  114.         name:                    Str63;
  115.         comment:                Str255;
  116.         gender:                    INTEGER;
  117.         age:                    INTEGER;
  118.         script:                    INTEGER;
  119.         language:                INTEGER;
  120.         region:                    INTEGER;
  121.         reserved:                ARRAY [0..3] OF LONGINT;
  122.     END;
  123.  
  124.     VoiceFileInfo = RECORD
  125.         fileSpec:                FSSpec;
  126.         resID:                    INTEGER;
  127.     END;
  128.  
  129.     SpeechStatusInfo = RECORD
  130.         outputBusy:                BOOLEAN;
  131.         outputPaused:            BOOLEAN;
  132.         inputBytesLeft:            LONGINT;
  133.         phonemeCode:            INTEGER;
  134.     END;
  135.  
  136.     SpeechErrorInfo = RECORD
  137.         count:                    INTEGER;
  138.         oldest:                    OSErr;
  139.         oldPos:                    LONGINT;
  140.         newest:                    OSErr;
  141.         newPos:                    LONGINT;
  142.     END;
  143.  
  144.     SpeechVersionInfo = RECORD
  145.         synthType:                OSType;
  146.         synthSubType:            OSType;
  147.         synthManufacturer:        OSType;
  148.         synthFlags:                LONGINT;
  149.         synthVersion:            NumVersion;
  150.     END;
  151.  
  152.     PhonemeInfo = RECORD
  153.         opcode:                    INTEGER;
  154.         phStr:                    Str15;
  155.         exampleStr:                Str31;
  156.         hiliteStart:            INTEGER;
  157.         hiliteEnd:                INTEGER;
  158.     END;
  159.  
  160.     PhonemeDescriptor = RECORD
  161.         phonemeCount:            INTEGER;
  162.         thePhonemes:            ARRAY [0..0] OF PhonemeInfo;
  163.     END;
  164.  
  165.     SpeechXtndData = PACKED RECORD
  166.         synthCreator:            OSType;
  167.         synthData:                ARRAY [0..1] OF Byte;
  168.     END;
  169.  
  170.     DelimiterInfo = PACKED RECORD
  171.         startDelimiter:            ARRAY [0..1] OF Byte;
  172.         endDelimiter:            ARRAY [0..1] OF Byte;
  173.     END;
  174.  
  175.     SpeechTextDoneProcPtr = ProcPtr;  { PROCEDURE SpeechTextDone(parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT); }
  176.     SpeechDoneProcPtr = ProcPtr;  { PROCEDURE SpeechDone(parameter0: SpeechChannel; parameter1: LONGINT); }
  177.     SpeechSyncProcPtr = ProcPtr;  { PROCEDURE SpeechSync(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSType); }
  178.     SpeechErrorProcPtr = ProcPtr;  { PROCEDURE SpeechError(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSErr; parameter3: LONGINT); }
  179.     SpeechPhonemeProcPtr = ProcPtr;  { PROCEDURE SpeechPhoneme(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER); }
  180.     SpeechWordProcPtr = ProcPtr;  { PROCEDURE SpeechWord(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER); }
  181.     SpeechTextDoneUPP = UniversalProcPtr;
  182.     SpeechDoneUPP = UniversalProcPtr;
  183.     SpeechSyncUPP = UniversalProcPtr;
  184.     SpeechErrorUPP = UniversalProcPtr;
  185.     SpeechPhonemeUPP = UniversalProcPtr;
  186.     SpeechWordUPP = UniversalProcPtr;
  187.  
  188. CONST
  189.     uppSpeechTextDoneProcInfo = $0000FFC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param); }
  190.     uppSpeechDoneProcInfo = $000003C0; { PROCEDURE (4 byte param, 4 byte param); }
  191.     uppSpeechSyncProcInfo = $00000FC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param); }
  192.     uppSpeechErrorProcInfo = $00003BC0; { PROCEDURE (4 byte param, 4 byte param, 2 byte param, 4 byte param); }
  193.     uppSpeechPhonemeProcInfo = $00000BC0; { PROCEDURE (4 byte param, 4 byte param, 2 byte param); }
  194.     uppSpeechWordProcInfo = $00002FC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param, 2 byte param); }
  195.  
  196. FUNCTION NewSpeechTextDoneProc(userRoutine: SpeechTextDoneProcPtr): SpeechTextDoneUPP;
  197.     {$IFC NOT GENERATINGCFM }
  198.     INLINE $2E9F;
  199.     {$ENDC}
  200.  
  201. FUNCTION NewSpeechDoneProc(userRoutine: SpeechDoneProcPtr): SpeechDoneUPP;
  202.     {$IFC NOT GENERATINGCFM }
  203.     INLINE $2E9F;
  204.     {$ENDC}
  205.  
  206. FUNCTION NewSpeechSyncProc(userRoutine: SpeechSyncProcPtr): SpeechSyncUPP;
  207.     {$IFC NOT GENERATINGCFM }
  208.     INLINE $2E9F;
  209.     {$ENDC}
  210.  
  211. FUNCTION NewSpeechErrorProc(userRoutine: SpeechErrorProcPtr): SpeechErrorUPP;
  212.     {$IFC NOT GENERATINGCFM }
  213.     INLINE $2E9F;
  214.     {$ENDC}
  215.  
  216. FUNCTION NewSpeechPhonemeProc(userRoutine: SpeechPhonemeProcPtr): SpeechPhonemeUPP;
  217.     {$IFC NOT GENERATINGCFM }
  218.     INLINE $2E9F;
  219.     {$ENDC}
  220.  
  221. FUNCTION NewSpeechWordProc(userRoutine: SpeechWordProcPtr): SpeechWordUPP;
  222.     {$IFC NOT GENERATINGCFM }
  223.     INLINE $2E9F;
  224.     {$ENDC}
  225.  
  226. PROCEDURE CallSpeechTextDoneProc(parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT; userRoutine: SpeechTextDoneUPP);
  227.     {$IFC NOT GENERATINGCFM}
  228.     INLINE $205F, $4E90;
  229.     {$ENDC}
  230.  
  231. PROCEDURE CallSpeechDoneProc(parameter0: SpeechChannel; parameter1: LONGINT; userRoutine: SpeechDoneUPP);
  232.     {$IFC NOT GENERATINGCFM}
  233.     INLINE $205F, $4E90;
  234.     {$ENDC}
  235.  
  236. PROCEDURE CallSpeechSyncProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSType; userRoutine: SpeechSyncUPP);
  237.     {$IFC NOT GENERATINGCFM}
  238.     INLINE $205F, $4E90;
  239.     {$ENDC}
  240.  
  241. PROCEDURE CallSpeechErrorProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSErr; parameter3: LONGINT; userRoutine: SpeechErrorUPP);
  242.     {$IFC NOT GENERATINGCFM}
  243.     INLINE $205F, $4E90;
  244.     {$ENDC}
  245.  
  246. PROCEDURE CallSpeechPhonemeProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER; userRoutine: SpeechPhonemeUPP);
  247.     {$IFC NOT GENERATINGCFM}
  248.     INLINE $205F, $4E90;
  249.     {$ENDC}
  250.  
  251. PROCEDURE CallSpeechWordProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER; userRoutine: SpeechWordUPP);
  252.     {$IFC NOT GENERATINGCFM}
  253.     INLINE $205F, $4E90;
  254.     {$ENDC}
  255.  
  256. FUNCTION SpeechManagerVersion: NumVersion;
  257.     {$IFC NOT GENERATINGCFM}
  258.     INLINE $203C, $0000, $000C, $A800;
  259.     {$ENDC}
  260. FUNCTION MakeVoiceSpec(creator: OSType; id: OSType; VAR voice: VoiceSpec): OSErr;
  261.     {$IFC NOT GENERATINGCFM}
  262.     INLINE $203C, $0604, $000C, $A800;
  263.     {$ENDC}
  264. FUNCTION CountVoices(VAR numVoices: INTEGER): OSErr;
  265.     {$IFC NOT GENERATINGCFM}
  266.     INLINE $203C, $0108, $000C, $A800;
  267.     {$ENDC}
  268. FUNCTION GetIndVoice(index: INTEGER; VAR voice: VoiceSpec): OSErr;
  269.     {$IFC NOT GENERATINGCFM}
  270.     INLINE $203C, $030C, $000C, $A800;
  271.     {$ENDC}
  272. FUNCTION GetVoiceDescription(VAR voice: VoiceSpec; VAR info: VoiceDescription; infoLength: LONGINT): OSErr;
  273.     {$IFC NOT GENERATINGCFM}
  274.     INLINE $203C, $0610, $000C, $A800;
  275.     {$ENDC}
  276. FUNCTION GetVoiceInfo(VAR voice: VoiceSpec; selector: OSType; voiceInfo: UNIV Ptr): OSErr;
  277.     {$IFC NOT GENERATINGCFM}
  278.     INLINE $203C, $0614, $000C, $A800;
  279.     {$ENDC}
  280. FUNCTION NewSpeechChannel(VAR voice: VoiceSpec; VAR chan: SpeechChannel): OSErr;
  281.     {$IFC NOT GENERATINGCFM}
  282.     INLINE $203C, $0418, $000C, $A800;
  283.     {$ENDC}
  284. FUNCTION DisposeSpeechChannel(chan: SpeechChannel): OSErr;
  285.     {$IFC NOT GENERATINGCFM}
  286.     INLINE $203C, $021C, $000C, $A800;
  287.     {$ENDC}
  288. FUNCTION SpeakString(s: StringPtr): OSErr;
  289.     {$IFC NOT GENERATINGCFM}
  290.     INLINE $203C, $0220, $000C, $A800;
  291.     {$ENDC}
  292. FUNCTION SpeakText(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT): OSErr;
  293.     {$IFC NOT GENERATINGCFM}
  294.     INLINE $203C, $0624, $000C, $A800;
  295.     {$ENDC}
  296. FUNCTION SpeakBuffer(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT; controlFlags: LONGINT): OSErr;
  297.     {$IFC NOT GENERATINGCFM}
  298.     INLINE $203C, $0828, $000C, $A800;
  299.     {$ENDC}
  300. FUNCTION StopSpeech(chan: SpeechChannel): OSErr;
  301.     {$IFC NOT GENERATINGCFM}
  302.     INLINE $203C, $022C, $000C, $A800;
  303.     {$ENDC}
  304. FUNCTION StopSpeechAt(chan: SpeechChannel; whereToStop: LONGINT): OSErr;
  305.     {$IFC NOT GENERATINGCFM}
  306.     INLINE $203C, $0430, $000C, $A800;
  307.     {$ENDC}
  308. FUNCTION PauseSpeechAt(chan: SpeechChannel; whereToPause: LONGINT): OSErr;
  309.     {$IFC NOT GENERATINGCFM}
  310.     INLINE $203C, $0434, $000C, $A800;
  311.     {$ENDC}
  312. FUNCTION ContinueSpeech(chan: SpeechChannel): OSErr;
  313.     {$IFC NOT GENERATINGCFM}
  314.     INLINE $203C, $0238, $000C, $A800;
  315.     {$ENDC}
  316. FUNCTION SpeechBusy: INTEGER;
  317.     {$IFC NOT GENERATINGCFM}
  318.     INLINE $203C, $003C, $000C, $A800;
  319.     {$ENDC}
  320. FUNCTION SpeechBusySystemWide: INTEGER;
  321.     {$IFC NOT GENERATINGCFM}
  322.     INLINE $203C, $0040, $000C, $A800;
  323.     {$ENDC}
  324. FUNCTION SetSpeechRate(chan: SpeechChannel; rate: Fixed): OSErr;
  325.     {$IFC NOT GENERATINGCFM}
  326.     INLINE $203C, $0444, $000C, $A800;
  327.     {$ENDC}
  328. FUNCTION GetSpeechRate(chan: SpeechChannel; VAR rate: Fixed): OSErr;
  329.     {$IFC NOT GENERATINGCFM}
  330.     INLINE $203C, $0448, $000C, $A800;
  331.     {$ENDC}
  332. FUNCTION SetSpeechPitch(chan: SpeechChannel; pitch: Fixed): OSErr;
  333.     {$IFC NOT GENERATINGCFM}
  334.     INLINE $203C, $044C, $000C, $A800;
  335.     {$ENDC}
  336. FUNCTION GetSpeechPitch(chan: SpeechChannel; VAR pitch: Fixed): OSErr;
  337.     {$IFC NOT GENERATINGCFM}
  338.     INLINE $203C, $0450, $000C, $A800;
  339.     {$ENDC}
  340. FUNCTION SetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: UNIV Ptr): OSErr;
  341.     {$IFC NOT GENERATINGCFM}
  342.     INLINE $203C, $0654, $000C, $A800;
  343.     {$ENDC}
  344. FUNCTION GetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: UNIV Ptr): OSErr;
  345.     {$IFC NOT GENERATINGCFM}
  346.     INLINE $203C, $0658, $000C, $A800;
  347.     {$ENDC}
  348. FUNCTION TextToPhonemes(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT; phonemeBuf: Handle; VAR phonemeBytes: LONGINT): OSErr;
  349.     {$IFC NOT GENERATINGCFM}
  350.     INLINE $203C, $0A5C, $000C, $A800;
  351.     {$ENDC}
  352. FUNCTION UseDictionary(chan: SpeechChannel; dictionary: Handle): OSErr;
  353.     {$IFC NOT GENERATINGCFM}
  354.     INLINE $203C, $0460, $000C, $A800;
  355.     {$ENDC}
  356.  
  357. { $ALIGN RESET}
  358. { $POP}
  359.  
  360. {$ENDC} {__SPEECH__}
  361.  
  362.  IMPLEMENTATION
  363.  END.
  364.  
  365.